package acessoDados.dao.impl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import acessoDados.dao.BaseDAO;

import constants.ProjectConstants;

public class BaseDAOImpl implements BaseDAO{
	
	static Connection connection=null;

	public Connection connecta() throws ClassNotFoundException, SQLException, SQLException {

		if(connection==null){
			Class.forName("com.mysql.jdbc.Driver");
			String url = ProjectConstants.BD_URL;
			String user = ProjectConstants.BD_UTILIZADOR;
			String pass = ProjectConstants.BD_PASS;
			connection=DriverManager.getConnection(url, user, pass);
			return connection;
		}else{
			return connection;
		}
		
	}

	public int executaQueryUpdate(String query) throws SQLException, ClassNotFoundException {
		Connection con = connecta();
		Statement stmt = con.createStatement();
		if(ProjectConstants.DEBUG_ON)
			System.out.println(query);
		return stmt.executeUpdate(query);
	}

	public ResultSet executaQuery(String query) throws SQLException, ClassNotFoundException {
		Connection con = connecta();
		Statement stmt = con.createStatement();
		if(ProjectConstants.DEBUG_ON)
			System.out.println(query);
		return stmt.executeQuery(query);
	}

	public acessoDados.dao.PessoaDAO getPessoaDAO() {
		return new acessoDados.dao.impl.PessoaDAOImpl();
	}

	public acessoDados.dao.AviaoDAO getAviaoDAO() {
		return new acessoDados.dao.impl.AviaoDAOImpl();
	}

	public acessoDados.dao.LocalDAO getLocalDAO() {
		return new acessoDados.dao.impl.LocalDAOImpl();
	}

	public acessoDados.dao.NotificacaoDAO getNotificacaoDAO() {
		return new acessoDados.dao.impl.NotificacaoDAOImpl();
	}

	public acessoDados.dao.RelatorioDAO getRelatorioDAO() {
		return new acessoDados.dao.impl.RelatorioDAOImpl();
	}

	public acessoDados.dao.ReservaDAO getReservaDAO() {
		return new acessoDados.dao.impl.ReservaDAOImpl();
	}

	public acessoDados.dao.ViagemDAO getViagemDAO() {
		return new acessoDados.dao.impl.ViagemDAOImpl();
	}
}
